from flask import request

from info.models import News,User
from info import constants
from flask import session,g,redirect
#定义,点击排行的函数
def get_click_list():
    # 接收查询的新闻,精确查找显示的数量,用constants包中的方法只显示6个
    news_list1 = News.query.order_by(News.clicks.desc()). limit(constants.CLICK_RANK_MAX_NEWS)
    news_list2 = [news.to_click_dict() for news in news_list1]
    return news_list2

import functools
def login_wrapps(view):
    #注意:再试图函数上添加装饰器,必须使用如下装饰器修饰内部函数
    #答:返回原有函数view的名称
    @functools.wraps(view)
    def fun2(*args,**kwargs):
        #注意:再装饰器中生成的数据如何再试图函数中访问
        #答;使用全局变量g
        if 'user_id'  in session:
            g.user = User.query.get(session.get('user_id'))
        else:
            g.user = None
            if request.path.startswith('/profile'):
                return redirect('/')
            #注意:使用装饰器装饰试图函数,必须返回response

        return view(*args,**kwargs)
    return fun2
